"""
辅助工具函数
"""
import re
import json
import logging
from typing import Optional, Dict, Any

logger = logging.getLogger(__name__)


def extract_json_from_markdown(content: str) -> Optional[Dict[str, Any]]:
    """
    从Markdown格式的内容中提取JSON数据
    
    Args:
        content: 包含```json```标记的Markdown内容
        
    Returns:
        提取的JSON对象，如果未找到则返回None
    """
    try:
        # 匹配```json ... ```格式
        json_pattern = r'```json\s*\n(.*?)\n```'
        matches = re.findall(json_pattern, content, re.DOTALL)
        
        if matches:
            # 取第一个匹配的JSON
            json_str = matches[0].strip()
            return json.loads(json_str)
        
        logger.warning("未在内容中找到JSON格式数据")
        return None
        
    except json.JSONDecodeError as e:
        logger.error(f"JSON解析失败: {e}")
        return None
    except Exception as e:
        logger.error(f"提取JSON时发生错误: {e}")
        return None


def format_file_size(size_bytes: int) -> str:
    """
    格式化文件大小
    
    Args:
        size_bytes: 字节数
        
    Returns:
        格式化后的文件大小字符串
    """
    for unit in ['B', 'KB', 'MB', 'GB', 'TB']:
        if size_bytes < 1024.0:
            return f"{size_bytes:.2f} {unit}"
        size_bytes /= 1024.0
    return f"{size_bytes:.2f} PB"


def sanitize_filename(filename: str) -> str:
    """
    清理文件名，移除非法字符
    
    Args:
        filename: 原始文件名
        
    Returns:
        清理后的文件名
    """
    # 移除或替换非法字符
    illegal_chars = r'[<>:"/\\|?*]'
    return re.sub(illegal_chars, '_', filename)


def create_response(success: bool, message: str, data: Any = None) -> Dict[str, Any]:
    """
    创建统一的API响应格式
    
    Args:
        success: 是否成功
        message: 响应消息
        data: 响应数据
        
    Returns:
        响应字典
    """
    response = {
        "success": success,
        "message": message
    }
    if data is not None:
        response["data"] = data
    return response

